// $on   事件监听
// $emit 事件派发
// $off  事件销毁
// $bus 就是一个发布订阅模式 
// 顾客 去买鞋 老板说没了 你加我个微信吧 我有了告诉你

// class + ts  = 去封装一个发布订阅模式


// ES5 面向对象写法 
// 第二 继承很繁琐 https://www.cnblogs.com/ranyonsue/p/11201730.html 
function App() {
    constructor
}
App.prototype.$emit = () => {
    console.log(123)
}

const app = new App()// 实例化
app.$emit()

// ES6 面向对象写法
// ES6 的继承语法相对于ES5 简单了很多  一个extends 和 super() 就可以实现继承
class Father {
    constructor() {

    }
    fun() {
        console.log('老爹的方法')
    }
}
class App extends Father {
    constructor() {
        super() // 调用父类的constructor  不写这个不能继承
    }
    $emit() {
        console.log(456)
        this.fun()
    }
    static num = 1 // 类的静态方法  不需要实例化可以直接调用

}
console.log(App.num)
const app = new App() // 实例化
app.$emit()



 // ts : 类中的访问类型 private(内), protected(内 子 ), public(内 外)